学习C++ Primer Plus本书,有感觉比较重要的点进行相关记录
第三章 cout控制符dex hex oc 分别指示cout以十进制 十六进制 八进制方式显示整数 (默认以dex显示)
修改格式后,之后所有的cout所输出的数字均为所修改的格式。
用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <iostream> using namespace std;int main () { using namespace std; int chest = 42 ; int waist = 42 ; int inseam = 42 ; cout << "Monsieur cuts a striking figure!" << endl; cout << "chest = " << chest << " (decimal for 42)" << endl; cout << hex; cout << "waist = " << waist << " (hexadecimal for 42)" << endl; cout << oct; cout << "inseam = " << inseam << " (octal for 42)" << endl; return 0 ; }
第四章 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <iostream> #include <stdio.h> using namespace std;int main () { int n; char test[100 ]; cin >> n; getchar (); cin.getline (test, 11 ); cout << test << endl; return 0 ; }
将1#注释掉,运行程序,输入n的值之后,程序就马上结束
‘\n’是cin.getline()的结束符
在cin执行的时候,它是会忽略一开始输入的所有换行符’\n’和空格的。所以它并不会将残留的’\n’当做它的结束符 而cin.getline()是不会忽略的
==在cin与cin.getline()或者cin.get()混合使用时,要注意’\n’带来的影响!==
string 所创建的字符串ch可以使用
输入
共用体 为了节省内存而创建 cpppp p94
不能将 整形赋给指针 ,需要强制类型转换:
1 2 int * pt;pt = (int *) 0xB8000000 ;
gets(char*) 参数为char*, 不接受string类型的参数。
数组的代替品
1.vecyor
1 2 3 4 5 6 7 #include <vector> ... using namespace std;vector<int > vi; int n;cin >> n; vector<double > vd (n) ;
vecyor 是一个动态数组
2.array
1 2 3 4 5 #include <array> ... using namespace std;array<int , 5> ai; array<double , 4> ad = {1.2 , 2.1 , 3.43 , 4.3 };
array 是一个长度固定的数组
获取 array,vector,string 的元素个数 array:
1 sizeof (array ) / sizeof (array [0 ])
vector:
string:
第五章 1 cout.setf (ios_base::boolalpha);
cout 在显示bool值之前将它们转化为int,但上述函数调用设置了一个标记,该标记命令cout显示true和false,而不是1和0.
for语句初始化部分可以声明一个变量,但离开for语句后这个变量将消失不可用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <iostream> #include <ctime> int main () { using namespace std; cout << "Enter the delay time, in seconds: " ; float secs; cin >> secs; clock_t delay = secs * CLOCKS_PER_SEC; cout << "starting\a\n" ; clock_t start = clock (); while (clock () - start < delay ) ; cout << "done \a\n" ; return 0 ; }
使用clock()和头文件ctime创建的延迟循环代码 P149
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <iostream> int main () { using namespace std; char ch; int count = 0 ; cout << "Enter characters; enter # to quit:\n" ; cin.get (ch); while (ch != '#' ) { cout << ch; ++count; cin.get (ch); } cout << endl << count << " characters read\n" ; return 0 ; }
合理利用缓冲区的例子 P153
第六章 字符函数库cctype P179
1 2 3 cout<<fixed cout.precision(2 ) cout.setf(iOS_base::showpoint)
http://blog.csdn.net/FX677588/article/details/52717245
关于字符串string、char*字符串数组与其他类型转换
string<——>char*
1 2 3 4 5 6 7 char * nzArr = "abcd" ;string str = nzArr; string str = "abcd" ; char * nzArr = const_cast <char *>(str.c_str ());
string可以像数组arr[5]一样这样指定某个char string[5]
第七章 函数指针
函数名即为函数地址
使用函数指针需要先进行声明
函数指针中调用函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include <iostream> double betsy (int ) ;double pam (int ) ;void estimate (int , double (*pf)(int )) ;int main () { using namespace std; int code; cout << "How many lines of code do you need? " ; cin >> code; cout << "Here's Betsy's estimate:\n" ; estimate (code, betsy); cout << "Here's Pam's estimate:\n" ; estimate (code, pam); return 0 ; } double betsy (int lns) { return 0.05 * lns; } double pam (int lns) { return 0.03 * lns + 0.0004 * lns * lns; } void estimate (int lines, double (*pf)(int )) { using namespace std; cout << lines << " lines will take " ; cout << (*pf)(lines) << " hour(s)\n" ; }
第八章 函数模板 声明和定义时均需要
第十一章 1 2 3 4 Time A, B, C, D; D = A + B + C; D = A.operator+(B.operator+(C));
第十二章 析构函数将在定义对象的代码块执行完毕时调用
c++ 文件操作 要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 和 。
1 void open (const char *filename, ios::openmode mode) ;
open() 成员函数的第一参数指定要打开的文件的名称和位置,第二个参数 定义文件被打开的模式。
模式标志
描述
ios::app
追加模式。所有写入都追加到文件末尾。
ios::ate
文件打开后定位到文件末尾。
ios::in
打开文件用于读取。
ios::out
打开文件用于写入。
ios::trunc
如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。
例如,如果您想要以写入模式打开 文件,并希望截断文件,以防文件已存在,那么您可以使用下面的语法:
1 2 ofstream outfile; outfile.open ("file.dat" , ios::out | ios::trunc );
关闭文件的close()成员:
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <fstream> #include <iostream> using namespace std;int main () { char data[100 ]; ofstream outfile; outfile.open ("afile.dat" ); cout << "Writing to the file" << endl; cout << "Enter your name: " ; cin.getline (data, 100 ); outfile << data << endl; cout << "Enter your age: " ; cin >> data; cin.ignore (); outfile << data << endl; outfile.close (); ifstream infile; infile.open ("afile.dat" ); cout << "Reading from the file" << endl; infile >> data; cout << data << endl; infile >> data; cout << data << endl; infile.close (); return 0 ; }
1 2 3 4 5 6 7 8 fileObject.seekg ( n ); fileObject.seekg ( n, ios::cur ); fileObject.seekg ( n, ios::end ); fileObject.seekg ( 0 , ios::end );